package com.logistics.modules.transportationManagement.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.logistics.common.utils.PageUtils;
import com.logistics.common.utils.R;
import com.logistics.modules.transportationManagement.entity.MoveplanEntity;
import com.logistics.modules.transportationManagement.entity.VehiclemoveorderEntity;
import com.logistics.modules.transportationManagement.excel.ExcelMovePlan;

import java.util.List;
import java.util.Map;

/**
 *
 *
 * @author HURRICANE
 * @email HURRICANE@nb.com
 * @date 2022-05-14 10:48:35
 */
public interface MoveplanService extends IService<MoveplanEntity> {

    /**
     * 分页查询
     *
     * @param params 参数个数
     * @return {@link PageUtils}
     */
    PageUtils queryPage(Map<String, Object> params);

    /**
     * 仓储和生成运输计划
     *
     * @param params 参数个数
     */
    void warehousingAndGeneratingShippingPlans(Map<String, Object> params);

    /**
     * 根据id选择所有
     *
     * @param movePlanIds 行动计划id
     * @return {@link List}<{@link MoveplanEntity}>
     */
    List<MoveplanEntity> selectAllByIds(Integer[] movePlanIds);

    /**
     * 修改它们计划状态
     *
     * @param vehicleMoveOrder
     * @param status
     * @return {@link Boolean}
     */
    Boolean modifyTheStatusOfAShippingPlan(VehiclemoveorderEntity vehicleMoveOrder, Integer status);

    /**
     * 获取结算的数据和计算逾期费用并保存到数据库
     *
     * @param params 参数个数
     */
    R getSettlementAndSaveDatabase(Map<String, Object> params);

    /**
     * 实现运输计划
     *
     * @param params 参数个数
     */
    void settlementShippingPlan(Map<String, Object> params);

    ExcelMovePlan downloadExcel(Map<String, Object> map);

    /**
     * 获取数据时间
     *
     * @param params 参数个数
     * @return {@link R}
     */
    R getDataByTime(Map<String, Object> params);

    R getPieData();
}

